#include "ucos_ii.h"
#include "bsp_key.h"
#include "multi_button.h"
#include "st7735s.h"

uint8_t num = 0;

/**
 * @brief 测试初始化位置对系统的影响
 */
void button_gpio_init(void)
{
    GPIO_InitTypeDef init = {0};
    __HAL_RCC_GPIOC_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();

    init.Pin = GPIO_PIN_3;
    init.Mode = GPIO_MODE_OUTPUT_PP;
    init.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOC, &init);

    init.Pin = GPIO_PIN_13;
    init.Mode = GPIO_MODE_INPUT;
    HAL_GPIO_Init(GPIOC, &init);

    init.Pin = GPIO_PIN_1;
    init.Mode = GPIO_MODE_OUTPUT_PP;
    HAL_GPIO_Init(GPIOB, &init);

    init.Pin = GPIO_PIN_0;
    init.Mode = GPIO_MODE_OUTPUT_PP;
    HAL_GPIO_Init(GPIOA, &init);
}

static uint8_t Get_Key_UP_Pin_Status()
{
    uint8_t ret = 0;
    ret = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
    return ret;
}

/**
 * @brief 上方向键按下任务处理
 * @retval None
 */
void Key_UP_Pin_SingleClickedHandler(void *btn)
{
    num++;
}

/**
 * @brief 上方向键双击任务处理,打开液晶背光
 * @retval None
 */
void Key_UP_Pin_DoubleClickedHandler(void *btn)
{
    if(num > 0)
        num--;
}

void Key_Task(void *p_arg)
{

    struct Button upButton = {0};
     
    button_init(&upButton, Get_Key_UP_Pin_Status, 0);
    
    button_attach(&upButton, SINGLE_CLICK, Key_UP_Pin_SingleClickedHandler);
    button_attach(&upButton, DOUBLE_CLICK, Key_UP_Pin_DoubleClickedHandler);
   
    button_start(&upButton);
    while (1)
    {
        button_ticks();
        OSTimeDly(4);
    }
}